// Factory.h 
 
#ifndef _FACTORY_H_ 
#define _FACTORY_H_ 
 
class Product; 
 
class Factory
{ 
public: 
	virtual ~Factory ()  = 0 ;  
 
	virtual  Product*  CreateProduct()  = 0; 
 
protected: 
 	Factory(); 
 
private: 
 
}; 

class ConcreteFactory : public Factory  
{ 
public: 
 
	~ConcreteFactory (); 
	 
	ConcreteFactory(); 
	 
	Product* CreateProduct(); 
 
protected: 
 
private:
	Product *pPro; 
 
}; 
 
#endif //~_F ACTORY_H_